import router from '@/router/index'
import 'element-ui/lib/theme-chalk/index.css'
import '@fortawesome/fontawesome-free/css/all.min.css'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { log } from '@antv/g2plot/lib/utils'

NProgress.configure({
    easing: 'ease', // 动画方式
    speed: 500, // 递增进度条的速度
    showSpinner: false, // 是否显示加载ico
    trickleSpeed: 200, // 自动递增间隔
    minimum: 0.3 // 初始化时的最小百分比
})
// 白名单
const whiteList = ['/SW21-H2-05/login', '/SW21-H2-05/register'] // no redirect whitelist

// 导航守卫
// router.beforeEach((to, from, next) => {
//     NProgress.start()
//     // 获取当前路由信息
//     const currentRoutes = router.options.routes

//     // 将当前路由信息存储到本地存储（这里使用localStorage）
//     localStorage.setItem('routes', JSON.stringify(currentRoutes))

//     next()

// })
router.beforeEach((to, from, next) => {
    NProgress.start()

    // 检查用户是否登录，假设有个函数 isAuthenticated() 可以判断用户是否登录成功
    if (localStorage.getItem('token') && localStorage.getItem('routesToRemove')) {

        // 用户已登录，检查 localStorage 中是否有需要移除的路由信息
        const routesToRemove = localStorage.getItem('routesToRemove').split(',');
        routesToRemove.length


        // 如果存在需要移除的路由信息，则在此处移除对应的路由
        if (routesToRemove.length === 4) {
            // 找到要删除的路由
            const routeIndex = router.options.routes.findIndex(route => route.name === routesToRemove[0]);
            // 如果找到了要删除的路由，则从 routes 数组中移除
            if (routeIndex !== -1) {
                router.options.routes.splice(routeIndex, 1); // 从数组中移除路由对象
                // router.addRoutes(router.options.routes); // 重新添加更新后的路由数组
            }
            // 找到要删除的路由
            const routeIndex2 = router.options.routes.findIndex(route => route.name === routesToRemove[1]);
            // 如果找到了要删除的路由，则从 routes 数组中移除
            if (routeIndex2 !== -1) {
                router.options.routes.splice(routeIndex2, 1); // 从数组中移除路由对象
                // router.addRoutes(router.options.routes); // 重新添加更新后的路由数组
            }
            const routeIndex3 = router.options.routes.findIndex(route => route.name === routesToRemove[2]);
            // 如果找到了要删除的路由，则从 routes 数组中移除
            if (routeIndex3 !== -1) {
                router.options.routes.splice(routeIndex3, 1); // 从数组中移除路由对象
                // router.addRoutes(router.options.routes); // 重新添加更新后的路由数组
            }
            const routeIndex4 = router.options.routes.findIndex(route => route.name === routesToRemove[3]);
            // 如果找到了要删除的路由，则从 routes 数组中移除
            if (routeIndex4 !== -1) {
                router.options.routes.splice(routeIndex4, 1); // 从数组中移除路由对象
                // router.addRoutes(router.options.routes); // 重新添加更新后的路由数组
            }

        } else if (routesToRemove.length === 3) {
            // 找到要删除的路由
            const routeIndex = router.options.routes.findIndex(route => route.name === routesToRemove[0]);
            // 如果找到了要删除的路由，则从 routes 数组中移除
            if (routeIndex !== -1) {
                router.options.routes.splice(routeIndex, 1); // 从数组中移除路由对象
                // router.addRoutes(router.options.routes); // 重新添加更新后的路由数组
            }
            // 找到要删除的路由
            const routeIndex2 = router.options.routes.findIndex(route => route.name === routesToRemove[1]);
            // 如果找到了要删除的路由，则从 routes 数组中移除
            if (routeIndex2 !== -1) {
                router.options.routes.splice(routeIndex2, 1); // 从数组中移除路由对象
                // router.addRoutes(router.options.routes); // 重新添加更新后的路由数组
            }
            const routeIndex3 = router.options.routes.findIndex(route => route.name === routesToRemove[2]);
            // 如果找到了要删除的路由，则从 routes 数组中移除
            if (routeIndex3 !== -1) {
                router.options.routes.splice(routeIndex3, 1); // 从数组中移除路由对象
                // router.addRoutes(router.options.routes); // 重新添加更新后的路由数组
            }
        }

    }

    // 继续路由导航
    next();
})

router.afterEach(() => {
    // 在即将进入新的页面组件前，关闭掉进度条
    NProgress.done()
})